﻿//using Microsoft.WindowsAzure.Storage.Table.DataServices;
//using POC.Azure.Web;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;

//namespace POC.Azure.Model
//{
   
//    public sealed class SessionRow : TableServiceEntity
//    {
//        private string _id;
//        private string _applicationName;
//        private string _blobName;
//        private DateTime _expires;
//        private DateTime _created;
//        private DateTime _lockDate;

//        // application name + session id is partitionKey 
//        public SessionRow(string sessionId, string applicationName)
//            : base()
//        {
//            SecUtility.CheckParameter(ref sessionId, true, true, true, POC.Azure.Web.Configuration.MaxStringPropertySizeInChars, "sessionId");
//            SecUtility.CheckParameter(ref applicationName, true, true, true, Constants.MaxTableApplicationNameLength, "applicationName");

//            PartitionKey = SecUtility.CombineToKey(applicationName, sessionId);
//            RowKey = string.Empty;

//            Id = sessionId;
//            ApplicationName = applicationName;
//            ExpiresUtc = POC.Azure.Web.Configuration.MinSupportedDateTime;
//            LockDateUtc = POC.Azure.Web.Configuration.MinSupportedDateTime;
//            CreatedUtc = POC.Azure.Web.Configuration.MinSupportedDateTime;
//            Timeout = 0;
//            BlobName = string.Empty;
//        }

//        public SessionRow()
//            : base()
//        {
//        }

//        public string Id
//        {
//            set
//            {
//                if (value == null)
//                {
//                    throw new ArgumentException("To ensure string values are always updated, this implementation does not allow null as a string value.");
//                }
//                _id = value;
//                PartitionKey = SecUtility.CombineToKey(ApplicationName, Id);
//            }
//            get
//            {
//                return _id;
//            }
//        }

//        public string ApplicationName
//        {
//            set
//            {
//                if (value == null)
//                {
//                    throw new ArgumentException("To ensure string values are always updated, this implementation does not allow null as a string value.");
//                }
//                _applicationName = value;
//                PartitionKey = SecUtility.CombineToKey(ApplicationName, Id);
//            }
//            get
//            {
//                return _applicationName;
//            }
//        }

//        public int Timeout
//        {
//            set;
//            get;
//        }

//        public DateTime ExpiresUtc
//        {
//            set
//            {
//                SecUtility.SetUtcTime(value, out _expires);
//            }
//            get
//            {
//                return _expires;
//            }
//        }

//        public DateTime CreatedUtc
//        {
//            set
//            {
//                SecUtility.SetUtcTime(value, out _created);
//            }
//            get
//            {
//                return _created;
//            }
//        }

//        public DateTime LockDateUtc
//        {
//            set
//            {
//                SecUtility.SetUtcTime(value, out _lockDate);
//            }
//            get
//            {
//                return _lockDate;
//            }
//        }

//        public bool Locked
//        {
//            set;
//            get;
//        }

//        public int Lock
//        {
//            set;
//            get;
//        }

//        public string BlobName
//        {
//            set
//            {
//                if (value == null)
//                {
//                    throw new ArgumentException("To ensure string values are always updated, this implementation does not allow null as a string value.");
//                }
//                _blobName = value;
//            }
//            get
//            {
//                return _blobName;
//            }
//        }

//        public bool Initialized
//        {
//            set;
//            get;
//        }
//    }
//}
